package com.viaje.action.lugar;

import javax.persistence.*;

import org.apache.struts2.convention.annotation.*;

import com.opensymphony.xwork2.validator.annotations.EmailValidator;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.StringLengthFieldValidator;
import com.opensymphony.xwork2.validator.annotations.Validations;
import com.opensymphony.xwork2.validator.annotations.ValidatorType;
import com.viaje.common.util.Utilitario;
import com.viaje.model.Lugar;
import com.opensymphony.xwork2.ActionSupport;

public class EditLugarAction extends ActionSupport {
	private Lugar lugar;
	private long id;
	private String message;
	
	@Validations(
		       requiredStrings =
		        	{  @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.tipoviaje", key = "edit.lugar.tipoviaje.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.pais", key = "edit.lugar.pais.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.preferencias", key = "edit.lugar.preferencia.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.actividades", key = "edit.lugar.actividades.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.descripcion", key = "edit.lugar.descripcion.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.latitud", key = "edit.lugar.latitud.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.longitud", key = "edit.lugar.longitud.required")
		        	}
		    )
	
	@Action(value="/edit-usuario-*",
			params={"id","{1}"},
			results={
					@Result(name="exito",type="tiles",location="edit-usuario.tiles"),
					@Result(name="error",type="tiles",location="message.tiles"),
					@Result(name= "input",type="tiles", location = "edit-usuario.tiles") },
			interceptorRefs={
					 @InterceptorRef("fileUpload"), 
					 @InterceptorRef("basicStack"),
					 @InterceptorRef("jsonValidationWorkflowStack")})
		
	public String execute(){
		String result="exito";
		EntityManager em=
				Utilitario.getInstance().getEntityManager();
		lugar=em.find(Lugar.class, id);
		return result;
	}

	@Action(value="update-lugar",
			results={
			@Result(name="exito",type="tiles",location="message.tiles")
	} )
	public String update(){
		String result="exito";
		EntityManager em=
				Utilitario.getInstance().getEntityManager();
		EntityTransaction tx=em.getTransaction();
		Lugar lugarUpdate=em.find(Lugar.class, lugar.getId());
			try{
				tx.begin();
				lugarUpdate.setTipoviaje(lugar.getTipoviaje());
				lugarUpdate.setPais(lugar.getPais());
				lugarUpdate.setPreferencias(lugar.getPreferencias());
				lugarUpdate.setActividades(lugar.getActividades());
				lugarUpdate.setDescripcion(lugar.getDescripcion());
				lugarUpdate.setImagenLugar(lugar.getImagenLugar());
				lugarUpdate.setBolsaViaje(lugar.getBolsaViaje());
				lugarUpdate.setFecIni(lugar.getFecIni());
				lugarUpdate.setFecFin(lugar.getFecFin());
				em.merge(lugarUpdate);
				message = getText("edit.lugar.message.exito");
				tx.commit();
			}catch(Exception ex){
				ex.printStackTrace();
				tx.rollback();
				message = getText("edit.lugar.message.error");
			}
		return result;
	}
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public Lugar getLugar() {
		return lugar;
	}

	public void setLugar(Lugar lugar) {
		this.lugar = lugar;
	}	
}
